Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d45c49734f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7e35ecba27
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cfeef4cca0
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
cfeef4c to
639e9cb
Compare
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 639e9cb934
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
sdks/code-interpreter/python/src/code_interpreter/adapters/code_adapter.py
Show resolved
Hide resolved
Pangjiping
left a comment
There was a problem hiding this comment.
LGTM. I'll be working with @Generalwin to get the kubernetes_service work done.
|
Thanks the great feature for long-running workloads. |
Move _parse_and_accumulate_mount_refs() before the expires/manual-cleanup branch so that OSSFS ref counts are rebuilt for all sandbox containers on server restart, not just those with expiration timers. Made-with: Cursor
639e9cb to
e934e56
Compare
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1aa1b164a5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
TOML has no null literal; advise operators to comment out the key instead of setting it to null. Made-with: Cursor
| ge=60, | ||
| description=( | ||
| "Maximum allowed sandbox TTL in seconds for requests that specify timeout. " | ||
| "Omit from config to disable the server-side upper bound." |
There was a problem hiding this comment.
The description says "Omit from config to disable the server-side upper bound", but this field has default 86400, so omitting it still enables the cap. Could we align behavior and docs here (either default None, or update wording to reflect default cap)?
| log_level = "INFO" | ||
| # api_key = "your-secret-api-key" # Optional: Uncomment to enable API key authentication | ||
| # eip = "1.2.3.4" # Optional: External IP/hostname for endpoint URLs when returning sandbox endpoints | ||
| # Maximum TTL for sandboxes that specify timeout. Comment out this line to disable the upper bound. |
There was a problem hiding this comment.
This comment says commenting out this line disables the upper bound, but with ServerConfig.max_sandbox_timeout_seconds defaulting to 86400, commenting it out does not disable the cap in practice. Please align guidance with runtime behavior.
| Sandbox timeout in seconds. The sandbox will automatically terminate after this duration. | ||
| SDK clients should provide a default value (e.g., 3600 seconds / 1 hour). | ||
| The maximum is controlled by the server configuration (`server.max_sandbox_timeout_seconds`). | ||
| Omit or set null to disable automatic expiration and require explicit cleanup. |
There was a problem hiding this comment.
timeout: null is documented here as manual-cleanup mode, but actual support is runtime/provider dependent (Kubernetes may reject when provider capability is false). Could we make this constraint explicit in the schema/docs to avoid client expectation mismatch?
There was a problem hiding this comment.
Added necessary description.
| expires_at = None | ||
| if request.timeout is not None: | ||
| expires_at = calculate_expiration_or_raise(created_at, request.timeout) | ||
| elif not self.workload_provider.supports_manual_cleanup(): |
There was a problem hiding this comment.
Implementation here correctly gates manual cleanup by provider capability. To keep API contract clear, please ensure lifecycle spec/docs explicitly state this is runtime/provider-dependent behavior (not universally available across all runtimes).
There was a problem hiding this comment.
We are aiming to align this behavior for all runtime providers, however, k8s runtime implementation is not supported via this PR to avoid too large code change.
K8s runtime implementation should be provided via another PR.
Align default with documentation: omitting the key now truly disables the server-side upper bound instead of silently applying 86400. Made-with: Cursor
Kubernetes providers may reject null timeout when the workload provider does not support non-expiring sandboxes. Make this constraint explicit in the OpenAPI spec and schema description. Made-with: Cursor
Self-hosted runner's persisted build cache can serve stale class files from a previous branch, causing compilation errors when new methods (e.g. manualCleanup) are not found. Clean and disable build cache to ensure a fresh build every run. Made-with: Cursor
Summary
nulltimeoutas non-expiring sandbox creation.expiresAtand explicit cleanup semantics.Testing
Breaking Changes
Impact:
expiresAt = nullfor manual-cleanup sandboxes.expiresAtis always a timestamp may fail when theycreate,get, orlistmanual-cleanup sandboxes.Migration path:
timeoutomitted ornull.Checklist